package com.neu.questionnaire_system.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.neu.questionnaire_system.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.*;

import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author xingle
 * @since 2022-10-31
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {

    //使用xml来插入用户
    int addUserInfo(Map<String,Object> map);

    //查询用户名是否存在
    int queryExistUser(Map<String,Object> map);

    //查询租户其下的用户列表
    IPage<Map<String,Object>> showUser(@Param("page")Page page,@Param("tid")String tid);

    //根据用户名删除
    @Delete("delete from user where userName=#{userName,jdbcType=VARCHAR}")
    int deleteUserByTrue(Map<String,Object> map);

    @Update("update user set isDeleted=#{isDeleted}where userName=#{userName,jdbcType=VARCHAR}")
    int deleteUser(Map<String,Object> map);

    //租户根据用户名查询用户信息，返回一个包含用户信息的map
    IPage<Map<String,Object>> findUserByUserName(@Param("page")Page page,@Param("userName")String userName,@Param("tid")String tid);

    //更新用户信息
    int updateUser(Map<String,Object> map);

    //登录查询用户信息
    User queryUserInfo(User user);

    //通过用户名查询其uid
    String queryUidByUserName(String userName);

    //通过uid查询是否有群组
    int queryClusterByUid(String uid);

    //通过tid查询是否存在用户所属该租户
    int queryUserByTid(String tid);

    //根据用户名判断用户是否存在，如果存在返回大于0
    int queryUserIsEmpty(String userName);

    //查询所有用户列表
    IPage<Map<String,Object>> showAll(Page page);

    @Update("update user set isLogin=#{isLogin,jdbcType=VARCHAR} where uid=#{uid}")
    int setUserIsLogin(@Param("isLogin") String isLogin,@Param("uid")String uid);

    @Select("Select tid from user where uid=#{uid}")
    String findTidByUid(@Param("uid")String uid);
}
